version: '3'
services:
  emqx:
    image: emqx/emqx:5.8.6
    container_name: emqx-mqtt
    ports:
      - "1886:1883"    # MQTT 端口
      - "8886:8883"    # MQTT over SSL
      - "8086:8083"    # WebSocket 端口
      - "18086:18083"  # Web 管理后台端口
      - "8087:8084"    # WebSocket SSL 端口
      - "18087:18084"  # Dashboard SSL 端口
    environment:
      - EMQX_ALLOW_ANONYMOUS=off
      - EMQX_HTTP_BASIC_AUTH_USERNAME=admin
      - EMQX_HTTP_BASIC_AUTH_PASSWORD=YH_6688
      - EMQX_DASHBOARD__DEFAULT_PASSWORD=YH_6688
      - EMQX_NAME=emqx
      - EMQX_HOST=localhost
      # ---------- MQTT over SSL (8883) ----------
      - EMQX_LISTENERS__SSL__DEFAULT__BIND=8883
      - EMQX_LISTENERS__SSL__DEFAULT__SSL_OPTIONS__CERTFILE=/etc/emqx/certs/fullchain.pem
      - EMQX_LISTENERS__SSL__DEFAULT__SSL_OPTIONS__KEYFILE=/etc/emqx/certs/privkey.pem
      # WebSocket SSL 配置
      - EMQX_LISTENERS__WSS__DEFAULT__BIND=8084
      - EMQX_LISTENERS__WSS__DEFAULT__SSL_OPTIONS__CERTFILE=/etc/emqx/certs/fullchain.pem
      - EMQX_LISTENERS__WSS__DEFAULT__SSL_OPTIONS__KEYFILE=/etc/emqx/certs/privkey.pem
      # Dashboard HTTPS 配置
      - EMQX_DASHBOARD__LISTENERS__HTTPS__DEFAULT__BIND=18084
      - EMQX_DASHBOARD__LISTENERS__HTTPS__DEFAULT__SSL__CERTFILE=/etc/emqx/certs/fullchain.pem
      - EMQX_DASHBOARD__LISTENERS__HTTPS__DEFAULT__SSL__KEYFILE=/etc/emqx/certs/privkey.pem
    volumes:
      - ./emqx.conf:/etc/emqx/emqx.conf
      - ./emqx_data:/opt/emqx/data
      - ./certs:/etc/emqx/certs   # 挂载证书目录
    restart: unless-stopped